package com.smartthinking.CICPNL.home.activity;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Dictionary;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import com.smartthinking.CICPNL.DatabaseHelper;
import com.smartthinking.CICPNL.R;
import com.smartthinking.CICPNL.R.id;

public class ProgramaDetalle extends Activity {

	private Dictionary dic;
	public Dialog progressDialog;
	private TextView txtTitulo;
	private TextView txtEspecialidad;
	private TextView txtNombre;
	private TextView txtDescripcion;
	public TextView txtInst;
	
	private TextView txtFecha;
	private TextView txtHora;
	private TextView txtLugar;
	
	private ImageView foto;
	private ImageView fotopatrocinadores;
	
	private String HoraIni;
	private String HoraFin;
	private TextView Costo;
	private TextView Cupo;
	private Intent intent;
	public static ArrayList<Dictionary<String, String>> TraeDatos = null;
	public Integer EVEIDR;
	String idpon;
	int evaluacion = 0;
	
	Utilities util;

	public void voidFinish(View V) {
		finish();
	}

	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
		// Checks the orientation of the screen
	}

	public void documentos (View v){
		intent = new Intent(ProgramaDetalle.this, Documentos.class);
		startActivity(intent); 
	}
	
	public void abrirMenuLateral(View V) {
		intent = new Intent(ProgramaDetalle.this, MenuLateral.class);
		startActivity(intent);
	}

	@Override
	public void onBackPressed() {
	}
	
    public void goPonentes(View v) {
    	intent = new Intent(this, Ponentes.class);
        intent.putExtra("PONENCIA", idpon);
        startActivity(intent);
    }


	/**
	 * Agrega un evento al calendario a traves de un intent
	 * 
	 * @param fecha
	 *            : con formato "aaaa-mm-dd"
	 * @param hora
	 *            : con formato "hh:mm - hh:mm" --> inicio - fin
	 * @param titulo
	 * @param descripcion
	 * @param ubicacion
	 */
	public void insertCalendario(String fecha, String hora, String titulo,
			String descripcion, String ubicacion) {
		try {
			int dia, mes, anio, horai, horaf, mini, minf;
			String[] f = fecha.split("-");
			String[] h_ini = (hora.split("-"))[0].trim().split(":");

			anio = Integer.parseInt(f[0]);
			mes = Integer.parseInt(f[1]);
			dia = Integer.parseInt(f[2]);

			horai = Integer.parseInt(h_ini[0]);
			mini = Integer.parseInt(h_ini[1]);
			try {
				String[] h_fin = (hora.split("-"))[1].trim().split(":");
				horaf = Integer.parseInt(h_fin[0]);
				minf = Integer.parseInt(h_fin[1]);
			} catch (Exception ex) {
				horaf = horai + 1;
				minf = mini;
			}


			Calendar beginTime = Calendar.getInstance();
			beginTime.set(anio, mes - 1, dia, horai, mini);
			long startMillis = beginTime.getTimeInMillis();
			Calendar endTime = Calendar.getInstance();
			endTime.set(anio, mes - 1, dia, horaf, minf);
			long endMillis = endTime.getTimeInMillis();

			Intent i = new Intent();
			i.setType("vnd.android.cursor.item/event");
			i.putExtra("title", titulo);
			i.putExtra("description", descripcion);
			i.putExtra("eventLocation", ubicacion);
			i.putExtra("beginTime", startMillis);
			i.putExtra("endTime", endMillis);

			i.setAction(Intent.ACTION_EDIT);
			startActivity(i);
			
		} catch (Exception ex) {
			AlertDialog.Builder ad = new AlertDialog.Builder(this);
			ad.setMessage("Error al ingresar el evento al calendario");
			ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int id) {
					dialog.cancel();
				}
			});
			ad.show();
		}

	}

	public void saveCalendario(View V) {
		insertCalendario(dic.get("nen_fecha").toString().trim(),
				dic.get("nen_inicio").toString().trim(), dic.get("nen_titulo")
						.toString(), dic.get("nen_descripcion").toString(), dic
						.get("nen_lugar").toString());
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.ui_programa_detalle);
		util = new Utilities();
		EVEIDR = Utilities.EVE_IDR;
	    CargarContenido();
	}

	private void CargarContenido() {
		// TODO Auto-generated method stub
		new AsyncContenido().execute("");
	}
	
	private class AsyncContenido extends AsyncTask<String, String, String>{
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			//progressDialog = ProgressDialog.show(ProgramaDetalle.this, "","Cargando...");
		}

		@Override
		protected String doInBackground(String... params) {
			Intent intent = getIntent();
		    idpon = intent.getStringExtra("idponencia");
			String qry  = "select * from ponencias where eve_idr=" + EVEIDR + " and nen_idr=" + idpon;
			TraeDatos = Utilities.qry2(getApplicationContext(), qry);
			return null;
		}
		
		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);
			
			final String titulo,desc,lugar,esp;
			
			if(Utilities.IDIOMA.equals("espa�ol")){
				titulo = TraeDatos.get(0).get("nen_titulo").toString();
				esp = TraeDatos.get(0).get("nen_especialidad").toString();
				desc = TraeDatos.get(0).get("nen_descripcion").toString();
				lugar = TraeDatos.get(0).get("nen_lugar").toString();				
			}else{
				titulo = TraeDatos.get(0).get("nen_titulo_en").toString();
				esp = TraeDatos.get(0).get("nen_especialidad_en").toString();
				desc = TraeDatos.get(0).get("nen_descripcion_en").toString();
				lugar = TraeDatos.get(0).get("nen_lugar_en").toString();
				
        		ImageButton calendario = (ImageButton)findViewById(id.btn_programadetalle_guardarcalendario);
        		calendario.setImageResource(R.drawable.btn_calendario_eng);
			}
			
			txtTitulo = (TextView) findViewById(id.tv_programadetalle_titulocabecero);
			txtTitulo.setText(titulo);
			
			txtEspecialidad = (TextView) findViewById(id.tv_programadetalle_especialidad);
			txtEspecialidad.setText(esp);
			
			txtInst = (TextView) findViewById(id.tv_programadetalle_institucion);
			txtInst.setText(TraeDatos.get(0).get("nen_institucion").toString());
			
			txtDescripcion = (TextView) findViewById(id.tv_programadetalle_descripcion);
			txtDescripcion.setText(desc);
			txtDescripcion.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					Intent goDescripcion = new Intent(ProgramaDetalle.this, Textos_largos.class);
					goDescripcion.putExtra("Texto", desc);
					startActivity(goDescripcion);
				}
			});
			
			txtFecha = (TextView) findViewById(id.tv_programadetalle_dia);
			txtFecha.setText(TraeDatos.get(0).get("nen_fecha").toString());
						
			txtHora = (TextView) findViewById(id.tv_programadetalle_hora);
			txtHora.setText(TraeDatos.get(0).get("nen_inicio").toString() + " - " + TraeDatos.get(0).get("nen_fin").toString());
			
			HoraIni = TraeDatos.get(0).get("nen_inicio").toString();
			HoraFin = TraeDatos.get(0).get("nen_fin").toString();
			
			txtLugar = (TextView) findViewById(id.tv_programadetalle_lugar);
			txtLugar.setText(lugar);
			
			if(TraeDatos.get(0).get("nen_foto").toString().length() > 6){
				foto = (ImageView)findViewById(id.imageView1);
				BitmapFactory.Options  options= new BitmapFactory.Options();
				options.inSampleSize = 1;
				Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/Pediatria/"+TraeDatos.get(0).get("nen_foto").toString());
				foto.setImageBitmap(bm);
			}
			
			if(TraeDatos.get(0).get("nen_patrocinios").toString().length() > 6){
				foto = (ImageView)findViewById(id.imageviewpatrocinadores);
				BitmapFactory.Options  options= new BitmapFactory.Options();
				options.inSampleSize = 1;
				Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/Pediatria/"+TraeDatos.get(0).get("nen_patrocinios").toString());
				foto.setImageBitmap(bm);
			}

			
			//CALIFICACION, COMENTARIO Y FAVORITO
			ImageButton btn = (ImageButton) findViewById(R.id.ed_btn_favorito);
			if(Utilities.checkData("PONENCIA",idpon,ProgramaDetalle.this)){
				btn.setImageResource(R.drawable.btn_favorito_act);
			}
			
		    String[] valores = util.getComentarios(ProgramaDetalle.this,"PONENCIA",idpon);
		    EditText texto = (EditText) findViewById(R.id.exp_txt_comentarios);
		    texto.setText(valores[1]);
		    if (valores[0].length()>0) {
		    	evaluacion = Integer.parseInt(valores[0]);
				switch (evaluacion){
				case 1:
					ImageButton a = (ImageButton) findViewById(R.id.ev_btn_a);
					a.setImageResource(R.drawable.a_act);
					break;
				case 2:
					ImageButton b = (ImageButton) findViewById(R.id.ev_btn_b);
					b.setImageResource(R.drawable.b_act);
					break;
				case 3:
					ImageButton c = (ImageButton) findViewById(R.id.ev_btn_c);
					c.setImageResource(R.drawable.c_act);
					break;
				case 4:
					ImageButton d = (ImageButton) findViewById(R.id.ev_btn_d);
					d.setImageResource(R.drawable.d_act);
					break;
				case 5:
					ImageButton f = (ImageButton) findViewById(R.id.ev_btn_f);
					f.setImageResource(R.drawable.f_act);
					break;
				}
		    }else{
		    	evaluacion = 0;
		    }
		    
    		final String subject,mail_body_html;
    		if(Utilities.IDIOMA.equals("espa�ol")){
        		subject = "App Pediatr�a Int: Informaci�n de ponencia";
				mail_body_html = "<h1>Te comparto la informaci�n de esta ponencia del congreso Internacional de Pediatr�a en Monterrey.</h1><br>" +
						"<h1>Titulo: "+TraeDatos.get(0).get("nen_titulo").toString()+"</h1><br>"+
						"<h1>Fecha: "+TraeDatos.get(0).get("nen_fecha").toString()+"</h1><br>"+
						"<h1>Hora: Inicio - "+TraeDatos.get(0).get("nen_inicio").toString()+" | T�rmino - " +
								TraeDatos.get(0).get("nen_fin").toString()+"10:00</h1><br>"+
						"<h1>Lugar: "+TraeDatos.get(0).get("nen_lugar").toString()+"</h1><br>";     			
    		}else{
        		subject = "Pediatria Int App: Event Talk Info";
				mail_body_html = "<h1>Let me share you a talk information from the International Congress of Pediatrics in Monterrey.</h1><br>" +
						"<h1>Title: "+TraeDatos.get(0).get("nen_titulo_en").toString()+"</h1><br>"+
						"<h1>Date: "+TraeDatos.get(0).get("nen_fecha").toString()+"</h1><br>"+
						"<h1>Hour: Start - "+TraeDatos.get(0).get("nen_inicio").toString()+" | End - " +
								TraeDatos.get(0).get("nen_fin").toString()+"10:00</h1><br>"+
						"<h1>Place: "+TraeDatos.get(0).get("nen_lugar_en").toString()+"</h1><br>";
    		}
		    
    		
		    String qry = "select * from ponentes_ponencias where nen_idr = " + TraeDatos.get(0).get("nen_idr").toString();
		    ArrayList<Dictionary<String, String>> Ponentes = Utilities.qry2(getApplicationContext(), qry);
		    
		    if (Ponentes.size()==0) {
		    	Button btnPonentes = (Button) findViewById(R.id.btnPonentes);
		    	btnPonentes.setText(getResources().getString(R.string.btn_sin_ponentes));
		    	btnPonentes.setClickable(false);
		    }

		    ImageButton bt = (ImageButton) findViewById(R.id.iv_compartir);
		    bt.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					if(Utilities.IDIOMA.equals("espa�ol")){
						Utilities.shareInfo(ProgramaDetalle.this, subject, mail_body_html, TraeDatos.get(0).get("nen_foto").toString(), 
								"XII Congreso Internacional de Pediatr�a Monterrey 2013: "+TraeDatos.get(0).get("nen_titulo").toString(), 
								"XII Congreso Internacional de Pediatr�a Monterrey 2013: "+TraeDatos.get(0).get("nen_titulo").toString(), 
								TraeDatos.get(0).get("nen_foto").toString(), "");						
					}else{
						Utilities.shareInfo(ProgramaDetalle.this, subject, mail_body_html, TraeDatos.get(0).get("nen_foto").toString(), 
								"XII International Congress of Pediatrics Monterrey 2013: "+TraeDatos.get(0).get("nen_titulo_en").toString(), 
								"XII International Congress of Pediatrics Monterrey 2013: "+TraeDatos.get(0).get("nen_titulo_en").toString(), 
								TraeDatos.get(0).get("nen_foto").toString(), "");
					}
				}
			});//click listener
		}
	}

	public void agregarCalendario(View v){
		Utilities util = new Utilities();
		if(Utilities.IDIOMA.equals("espa�ol")){
			util.insertCalendario(this,txtFecha.getText().toString(),HoraIni.toString()+"-"+HoraFin.toString(), ""+TraeDatos.get(0).get("nen_titulo").toString(),
					""+TraeDatos.get(0).get("nen_descripcion").toString(),txtLugar.getText().toString());			
		}else{
			util.insertCalendario(this,txtFecha.getText().toString(),HoraIni.toString()+"-"+HoraFin.toString(), ""+TraeDatos.get(0).get("nen_titulo_en").toString(),
					""+TraeDatos.get(0).get("nen_descripcion_en").toString(),txtLugar.getText().toString());
		}
	}
	
	public void makeFavorito(View v){
		ImageButton btn = (ImageButton) findViewById(R.id.ed_btn_favorito);
		DatabaseHelper usdbh = new DatabaseHelper(getApplicationContext()); 
        SQLiteDatabase db = usdbh.getWritableDatabase();

        if(db != null){
        	if(! Utilities.checkData("PONENCIA",idpon,ProgramaDetalle.this)){
        		Log.i("insert", "insert");
        		db.execSQL("INSERT INTO favoritos (tipo, idr) " + "VALUES ('PONENCIA', " + idpon +")");
        		btn.setImageResource(R.drawable.btn_favorito_act);	
        		Utilities.alert(this,this.getString(R.string.favorito_agregado));
        	}else{
        		Log.i("delete", "delete");
        		db.execSQL("DELETE FROM favoritos WHERE tipo='PONENCIA' AND idr="+idpon);
        		btn.setImageResource(R.drawable.btn_favorito_des);
        		Utilities.alert(this,this.getString(R.string.favorito_borrado));
        	}
        	db.close();
        	usdbh.close();
        }
	}
	
	public void evalua(View v){
		evaluacion = Integer.parseInt(v.getTag().toString());
		ImageButton a = (ImageButton) findViewById(R.id.ev_btn_a);
		ImageButton b = (ImageButton) findViewById(R.id.ev_btn_b);
		ImageButton c = (ImageButton) findViewById(R.id.ev_btn_c);
		ImageButton d = (ImageButton) findViewById(R.id.ev_btn_d);
		ImageButton f = (ImageButton) findViewById(R.id.ev_btn_f);
		
		a.setImageResource(R.drawable.a_des);
		b.setImageResource(R.drawable.b_des);
		c.setImageResource(R.drawable.c_des);
		d.setImageResource(R.drawable.d_des);
		f.setImageResource(R.drawable.f_des);
		
		switch (evaluacion){
		case 1:
			a.setImageResource(R.drawable.a_act);
			break;
		case 2:
			b.setImageResource(R.drawable.b_act);
			break;
		case 3:
			c.setImageResource(R.drawable.c_act);
			break;
		case 4:
			d.setImageResource(R.drawable.d_act);
			break;
		case 5:
			f.setImageResource(R.drawable.f_act);
			break;
		}
	}
	
	public void enviarComentario(View v){
		String texto = ((EditText) findViewById(R.id.exp_txt_comentarios)).getText().toString();
		if(evaluacion == 0){
			Utilities.alert(this,this.getString(R.string.comentario_califica));
			return;			
		}
		util.setComentarios(this,"PONENCIA", idpon, evaluacion, texto);
		Utilities.alert(this,this.getString(R.string.comentario_agregado));
	}
}
